#include <iostream>
#include <thread>
#include <memory>
#include <future>
#include <functional>

int Add(int num1, int num2)
{
    return num1 + num2;
}

int main()
{
    auto add = std::bind(&Add,11,22);
    //1.实例化，接受结果的promise对象
    auto pro = std::make_shared<std::promise<int>>();
    //2.通过promise获取关联的future对象
    std::future<int> res = pro->get_future();

    //3.在任意位置，执行函数
    std::thread th([&](){ int res = add();
                          pro->set_value(res);
                        });
    
    std::cout<<res.get()<<std::endl;
    th.join();

    return 0;
}